<!--
@license
Copyright 2017 GIVe Authors

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

### Build a new track implementation

A new track implementation consists of three components:
*   A track object, handling overall operations and APIs for the track itself.
    This should be a class derived from `GIVe.TrackObject`;
*   __(Optional)__ A track data object, handling all the data operations,
    including the interpretation of responses from the remote side, management
    of local cache and other data-related issues. This should be a class derived
    from `GIVe.TrackDataObject` or `null` if no local data is involved;
*   A track DOM object, handling all inputs from user and graphical output to
    the user interface. This should be a custom Polymer element with
    `GIVe.TrackDOMBehavior` behavior.
It is recommended that each component has its own file (JS file for track object
and track data object, HTML file for DOM object), but smaller files can be
combined (with necessary tags if JS files are to be combined into HTML) if
needed.

This file will serve as an overall `import` file to handle all the dependencies
needed to implement the track. In the example, all the components will be
separated.

### File structure in the new track template

Here we provided a template to implement new tracks. The template consists of
four files:

*   `new-track.html` (this file): an HTML file handles necessary library imports
    and links all other HTML and JS components of the track together. __This
    file should be `import`ed in the HTML code that uses the track.__
*   `newTrack.js`: a JS file for the track object;
*   `newTrackData.js`: a JS file for the track data-handling object;
*   `new-track-dom.html`: an HTML file for the customized Polymer element to
    display tracks.

### Procedures

First, `import` the base `track-object` to implement a new track.
-->
<link rel="import" href="../track-object.html">

<!--
Then import all other dependencies (omit if none is needed).
-->
<link rel="import" href="../../gene-object/gene-object.html">

<!--
Finally, all the components are either `import`ed (HTML files) or put in
`<script></script>` tags (JS files).
-->
<link rel="import" href="new-track-dom.html">
<script src="newTrackData.js"></script>
<script src="newTrack.js"></script>
